package com.ruoyi.system.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 合同付款周期实体类
 * 对应数据库表 contract_payment_schedule
 */
@Data
@TableName("t_contract_payment_schedule")
public class ContractPaymentSchedule {

    /**
     * 付款周期唯一标识（自增主键）
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 关联合同ID
     */
    private Long contractId;

    /**
     * 付款方式
     * 枚举值：1-现金，2-银行转账，3-支票，4-其他
     */
    private Integer paymentMethod;

    /**
     * 分期期数
     * 例如：1表示第一期，2表示第二期
     */
    private Integer installment;

    /**
     * 付款时间节点（预计付款日期）
     * 格式：YYYY-MM-DD
     */
    private LocalDate paymentDate;

    /**
     * 付款金额
     * 精度：12位数字，2位小数
     */
    private BigDecimal paymentAmount;

    /**
     * 付款状态
     * 枚举值：0-未付款，1-已付款，2-部分付款，3-逾期
     */
    private Integer paymentStatus;

    /**
     * 实际付款日期
     * 格式：YYYY-MM-DD，可为空
     */
    private LocalDate actualPaymentDate;

    /**
     * 实际付款金额
     * 精度：12位数字，2位小数，可为空
     */
    private BigDecimal actualPaymentAmount;

    /**
     * 付款备注
     * 记录付款相关说明信息
     */
    private String paymentRemark;

    /**
     * 逻辑删除标识
     * 0-未删除，1-已删除
     */
    @TableLogic
    private Integer isDeleted;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}
